SnapFib: An easy build Arduino based tabletop prototype for thin film deposition by Successive Ionic Layer Adsorption and Reaction method

Graphical abstract


Hardware in context
Thin films of materials are deposited on flexible or flat substrates (e.g., soda-lime glass) mainly by two techniques: vacuum and non-vacuum. Common vacuum-based techniques are sputtering, thermal evaporation, close-spaced sublimation, pulsed laser deposition, etc. Most of them are very expensive and require a lot of space to be accommodated with other machinery (e.g., vacuum pumps) to run the system. As a result, those machines cannot be built in a home environment from scratch. On the other hand, machines that use non-vacuum-based techniques are comparatively cheaper, unless otherwise smart features are added; they are easy to operate, and possible home-built prototype options are available. Most nonvacuum-based techniques use solid solution chemical synthesis routes, namely spin coating, doctor blading, dip coating, SILAR, etc. Both thin-film deposition processes have their own set of merits and demerits. As non-vacuum-based systems use chemical synthesis routes, controlling elemental composition ratios and atomic percentages in the final fabricated film takes it upfront among the researchers' community.
To grow thin films with the SILAR method, the substrate is successively immersed into separate cationic and anionic precursor solutions. It is found that at least four deposition steps are required to complete a SILAR cycle, in general. Adsorption in the cationic precursor solution, rinsing in deionized water, the reaction in the anionic precursor solution, and rinsing in deionized water are the steps. The underlying physical and chemical principles of the SILAR method are reported in the article [1]. The SILAR method is popular as it uses aqueous media as a solvent for precursor salts as compared to other toxic aprotic solvents like 2-Methoxyethanol. With some exceptions, SILAR depositions are performed mainly at room temperature. For thin film deposition recipes that need a temperature above room temperature but below the boiling point of water, extra features like a temperature controller option must be added to the system at an extra cost.
SILAR systems that are commercial quality and have complete functionality and smart features are very expensive. When the goal is to deposit a single layer film of a few micrometers in a device made up of multiple layers of films, such as a thinfilm solar cell, purchasing a whole piece of commercial-grade SILAR equipment is not justified. This needs thin-film deposition methods based on the SILAR approach in home-built devices [1][2][3][4]. Numerous designs and structures for automating the deposition process have been proposed [5,6]. Though some devices have been implemented, they are quite complex and expensive. SnapFib is a tabletop open-source thin-film deposition machine that we demonstrate in this article. Experiments were conducted to validate the prototype SnapFib thin-film fabrication. In this article, we present SnapFib: an open-source automated tabletop machine for thin film deposition controlled by an Arduino-based system. We also report validating experiments that demonstrate the capabilities of this low-cost and easy-to-build prototype for thin film fabrication.

Hardware description
SnapFib's closed-loop control mechanism assures that the 2-axis operation is vibration-free, smooth, and practically silent. To assure dust-free functioning, the entire SnapFib is housed in a box made of clear acrylic boards. Our SnapFib prototype is also complete in that it is affordable, uses minimal hardware that is easy to change, doesn't have licensing restrictions on user changes, and gives users the freedom to add more features. An overview of the designed hardware is shown in Fig. 1.
The presented hardware also has the following additional features: Vertical and horizontal movement is achieved using a combination of V-slot lead screw and belt-pulley powered linear actuators. Actuators with lead screws are expensive. Both types of actuators may be used for movement, but in our designed hardware, they will significantly reduce the budget. Using a rotary encoder instead of a normal keypad to choose and set control settings makes the process quick and easy. A Nema17 stepper motor and a 3D-printed substrate holder are used to make the rinsing move. The magnetic stirring option may be controlled.
Using an emergency stop switch makes SnapFib safer in case there is a mechanical or electrical problem. Electronically controlled by an Arduino-based system (due to its good documentation and support, as well as its very simple Integrated Development Environment (IDE), Arduino has recently been adopted by other researchers to control their ad-hoc thin film fabrication systems [5,[7][8][9].
One important change in the future could be to do thin-film deposition in an atmosphere of inert gas (N 2 or Ar).  [11]. Compared to the commercial systems, our system costs only $ 600 USD which is about 90 % cheaper.
The key differences between our proposed system with the commercially available systems are: 1. For the proposed system our focus is on using minimal hardware, automation with minimal human intervention, userfriendliness, and almost vibration-free operation with quality thin-film deposition. 2. To adopt minimal hardware, we have discarded the aesthetic beauty of hardware, inert environment for the deposition, temperature controller features, etc. which are the most common features of a commercially built system. 3. The system is suitable for a single thin-film or one/two of the thin-film layers in a stack of cascaded layered devices (e.g., in a complete thin-film solar cell device). 4. As a result, the designed system offers low-cost build, affordability, and adaptability among the researchers.

Hardware description in details
To describe SnapFib hardware in its simplest form, we can divide it into four main modules in a structure that goes from the bottom up above the table base. This part is designed to hold four 150 mL glass beakers in four evenly spaced places, 1-2-3-4. The dipping glass substrate on which the location of the beaker may be read from the LCD (Liquid Crystal Display) while the machine is running. A SILAR cycle is considered to be completed when the glass substrate passes through four locations. In addition to the standard 1-2-3-4 (adsorption-rinsing-reaction-rinsing) movements, other combinations (e.g., 1122, 1221, 4321, etc.) can be programmed as needed for specific investigations. Fig. 2 shows the designed beaker positioning module along with the magnetic stirrers. Magnetic stirring of liquids in the beaker is possible in two of the four positions. This is done by cutting a hole in the acrylic that is smaller in diameter than the beaker and putting a DC fan underneath it. Two neodymium magnets are attached to the DC fan, in opposite pole faces with respect to one another. We used Teflon coated magnetic stirrer bar inside the beakers containing solutions. Those bars rotate as an interaction with the magnetic fields created by the magnets upon the rotation of the DC fan. Of course, stirring actions can be programmed depending upon the deposition conditions from the control panel. X-axis module: The X-axis module shown in Fig. 3 handles the horizontal motion of the device. A gantry plate-1 is attached on wheelswith two series connected to each 500 mm long horizontal movement rail. This gantry plate is powered by a Nema23 stepper motor and is moved by a belt. It can move horizontally within two limit switches located at each end of a 1000 mm rail.

Y-axis module:
A gantry plate-2 is attached to a V-slot lead-screw driven rail and travels up and down with a NEMA23 stepper motor rotating the lead-screw rod. There are also two limit switches to prevent it from moving vertically by mistake. The gantry plate-2 is linked with a 3D printed substrate holder and a Nema17 stepper motor. RGB LEDs are also used to embellish the substrate holder, which lights up when the system is running. By installing it on the gantry plate-1, the entire module may be moved horizontally. The total structure of the y-axis module and the 3D building blocks are shown in Fig. 4.   Electronic module: An 8-bit microcontroller ATmega328P-based control panel is designed to control the parameters of the SILAR depositor. We can easily control several parameters, like the number of cycles, dip time, dip speed, dip length, etc. There are two beakers that are equipped with magnetic stirring of the chemical solution. A magnetic stirrer can be controlled with this control panel. These magnetic stirrers are built using BLDC motors and Neodymium magnets. To show the running parameters and output status a Liquid Crystal Display has been used. This is a parallel LCD that gives us a simple and cheaper solution for using an RGB Liquid Crystal display in our system. This display provides a 20-characters by 4-line interface with clear text on blue background light. To reduce the number of I/O ports by transforming the parallel lines of the LCD to I2C compatible lines we used an I2C module that is also ROHS-compliant. The heart of the board is a PCF8474 I2C chip that is capable of transforming I2C (Inter-Integrated Circuit) serial data to parallel data suitable for the LCD. The I2C address used for the LCD in our system was found using an I2C search program and this address can be changed using three soldered jumpers on the board. This setting enables us to use up to three LCDs controlled using only one I2C bus where each has its own address. Fig. 5 shows the complete control unit and the power supply assembly.
There are output ports for stepper drivers, limit switches, and magnetic stirrers on the back side of the control panel shown. The electrical system architecture and connection details of the components are shown in Fig. 6.

Build instructions
Parts required for building 04 modules of the entire hardware uploaded to the repository (visual). The following are the visual build instructions for each module.
Beaker positioning module: 1. Attach the two metal square tubes to the two ends of the glass in the way shown in Fig. 7 so that the tubes can handle the weight of the glass and beakers appropriately.  5. Connect the BLDC fans to the electrical system and control unit as necessary. After necessary adjustments, the final view of the beaker positioning base is shown in Fig. 9.
X-axis module: 1. Insert four 25 mm screws into the V-slot gantry plate holes and place the plate on its back. 2. Among the four screws, two are used for the eccentric side and the other two are used for the fixed side. For the eccentric side, place one 6 mm eccentric spacer into the two screws, and on top of the spacers, place one precision shim.
After that, add one solid v-wheel and one nylon hex nut over it on each of the wholes of the eccentric side. 3. For the fixed side, add one 6 mm aluminum spacer and a precision shim to each of the two screws. Place one v-wheel and one nylon hex nut over it in each of the two holes. Thus, the gantry plate and wheelset are ready. 4. Insert the gantry plate and wheel assembly into the V-slot linear rail and adjust the spacers and hex nuts as necessary to get the proper amount of friction and movement in the wheels to be able to move along the linear rail properly. 5. Insert one idler pulley kit into a screw and put a precision shim and an aluminum spacer on top of it. Then fix the idler pulley kit with the idler pulley plate and adjust the screw as necessary. 6. Attach the idler pulley assembly to one side of the linear rail using a double tee-nut and screws. 7. Attach the Nema-23 motor to the motor mount plate using four 15-mm screws and hex nuts. 8. Use double tee-nuts and screws to connect the motor mounting plate assembly to the open side of the V-slot linear rail. 9. Insert and fix the GT2 timing pulley into the shaft of the stepper motor. 10. Insert the 3GT timing belt through the slot of the linear rail and run it over the idler pulley wheel on one side and the GT3 timing pulley on the motor side. Use cable ties to tie both the sides of the timing belt to the side holes of the gantry plate. Adjust the belt and the cable tie to ensure that the belt is neither too tight nor too loose to be able to move the gantry plate smoothly along the v-slot linear rail. 11. With some final adjustments, finish building the X-axis assembly (Fig. 10). Fig. 11 shows a step-by-step visual guide for building the X-axis assembly.
Visual steps (X-axis assembly) as outlined above: Y-axis module: 1. Attach the threaded rod plate to the v-slot linear rail using a self-tapping screw. 2. Insert one 55-mm screw and one 40-mm spacer on top of it in each of the three holes of the threaded rod plate. 3. Attach the stepper motor with the spacers and screws using the motor shaft coupling. Adjust the side screws of the motor as necessary.  4. Attach the nut block to the gantry plate with M5 screws. 5. Attach two spacer blocks on the sides of the gantry plate using screws. 6. Attach two wheels using spacers and shims and the other two wheels using eccentric spacers and shims on the twospacer blocks. 7. Insert the wheel-gantry system into the V-slot rail assembly and adjust the wheel screws as necessary to ensure free movement of the wheel-gantry system along the V-slot rail. 8. Insert the 8 mm Acme lead screw through the gantry plate and insert the lock collar, shim, and ball bearing in the mentioned order. 9. Attach the remaining threaded rod plate to the end side of the V-slot linear rail and fix the lead screw to the rod plate using the lock collar shim and ball bearing. Adjust the lock collar as necessary so that the rotation of the lead screw properly moves the gantry plate up along the lead screw. The final view of the assembled Y-axis module is shown in Fig. 4(a). Fig. 12 shows a step-by-step visual guide for building the Y-axis module.
Visual steps (Y-axis assembly) as outlined above: Substrate holder sub-assembly with Y-axis module Electronic module

Power supply
The power supply module used in the system is shown in Fig. 15.  5. Adjust the output voltage of LM2596 to 5 V using the potentiometer in the module before placing the MCU and A4988 Stepper Driver. 6. Solder the I2C module to the LCD module. 7. Adjust the contrast of the LCD using the potentiometer of the I2C module and set the address of the I2C module according to the chip in programming.
The overall electrical architecture is shown in Fig. 16. Operation instructions

Initial setup
Once the mechanical structure and electrical assembly are prepared, we need to upload the operation code into the system through the upload port of the control panel. The given code files in the ''Design Files" section need to be uploaded using the Arduino IDE on a compatible computer. Before uploading, we need to select the correct port number from the IDE. The uploading process generally takes about 20 s to complete. Before uploading, we need to calculate the X-axis length and Yaxis length in terms of the number of steps of the stepper motor. For this, a single run along the X-axis and Y-axis is performed and the number of steps of the stepper motor is calculated. For our device, we used 3200 micro steps setting in the stepper driver and found the X-axis length to be 42,860 steps, whereas the Y-axis length is found to be 150,000 steps. These step values need to be updated in the code file before uploading.  Device startup and operation To start the device, simply turn on the power button on the back of the control panel. The whole machine is controlled by one reset button and one controller rotary encoder on the control panel (Fig. 17).
To ensure continuous operation, the device needs to run on an uninterrupted power backup (UPS). There are two modes of operation available for the device to operate as shown in Fig. 18: i) Program Mode and ii) Stirrer Mode. On starting the device, the control panel presents these two options for the user to choose.
The selection pointer jumps between the two options when the knob of the rotary encoder is rotated clockwise and counter-clockwise. Any of the two modes can be selected by pressing the button on the rotary encoder.

Program mode
The device can be run in program mode in the following way: A. Inside the program mode, there are several settings a user can tweak to suit the necessities of the operation. The settings are described below: Program mode settings: 1. Dip Order: Consists of 4 digits specifying the sequence in which the dipping of the substrate will take place. The digits can be repeated more than once. Thus, different combinations of the digits define different dip orders that the SILAR cycle needs to be operated on. 2. Num of Cycles: Specifies the number of times a SILAR cycle will be repeated. The value ranges from 1 to 999. By varying the number of cycles, the thickness of the film to be deposited can be changed. 3. Dip Speed: Specifies the speed in mm/s at which the substrate will be dipped inside the cationic beaker, the anionic beaker, and the rinsing beakers. This speed value ranges from 1 to 40 mm/s. 4. WD Speed: Specifies the withdrawal or removal speed of the substrate in mm/s from the beakers. To ensure the substrate is withdrawn from the beakers in a safe and vibration-free way, the value of this speed needs to be tweaked as necessary. This speed value ranges from 1 to 40 mm/s. 5. Dip Length: Specifies the length up to which the substrate will be dipped inside the beakers. This setting varies with the dimension of the slides used at the time of deposition. And the value of this setting ranges from 1 to 999 mm. 6. AD Time: Sets the adsorption time, i.e., the duration of time in seconds the substrate will be dipped inside the cationic solution. The value ranges from 1 to 100 s. 7. REC Time: Sets the reaction time, i.e., the duration of time in seconds the substrate will be dipped inside the anionic solution. The value ranges from 1 to 100 s. 8. Rin Time: Sets the rinsing time, i.e., the duration of time in seconds that the substrate will be rinsing in the deionized water beaker. 9. Stirrer 1: ON/OFF setting specifying if the stirrer 1 will be ON or OFF during the operation. If it is set to ON, the stirrer will be automatically turned off each time the substrate is dipped inside the beaker at position 1 and turned on after the substrate is out of the beaker. 10. Stirrer 2: ON/OFF setting, specifying if the stirrer 2 will be ON or OFF during the operation. If it is set to ON, the stirrer will be automatically turned off each time the substrate is dipped inside the beaker at position 3 and turned on after the substrate is out of the beaker. B. The mentioned setting parameters are spread through different pages in the user interface as shown in Fig. 19. To select a particular setting from a specific page the knob of the rotary encoder needs to be rotated clockwise or counter-clockwise to go back and forth in the settings list. C. To modify a certain setting the selection cursor needs to be on that line of setting and to modify the value the rotary encoder switch needs to be pressed to enter the editing mode (Fig. 20).
In the above figure the parameter ''Num of Cycles" is in the editing mode. Then the value can be changed by the rotation of the knob of the controller rotary encoder. The encoder switch needs to be pressed again to exit and save the new setting value. Once changed the system stores all values in the system memory so that every time the device starts with previously set settings values.   After saving the above settings choosing the last option ''Run" from page 4, starts the SILAR operation. At first, the device starts initialization of the x-axis and y-axis and the user interface notifies the user about this initialization stage as shown in Fig. 21.
D. After initialization during the operation, the status screen shown in Fig. 22 notifies the user about the current cycle number, the current position of the substrate head, and the remaining time needed to complete the operation. E. After completion of the operation, the system returns to the initial page to select the mode of operation for the next deposition. The deposition process can be stopped before the completion of the total number of cycles, by pressing the reset button.

Stirrer mode
In the stirrer mode, the magnetic stirrer can be operated without running the whole system as. This mode is useful for cases when only chemical stirring is required. The following two settings are available in this mode of operation as shown in Fig. 23.    i) Stirrer 1: Specifies the speed of stirrer 1 in the percentage of the maximum speed. The value ranges from 0 to 100 %. When the value is set to 0 % the stirrer turns off. ii) Stirrer 2: Specifies the speed of stirrer 2 in the percentage of the maximum speed. The value ranges from 0 to 100 %.
When the value is set to 0 % the stirrer turns off.
The reset button needs to be pressed once to exit from the ''Stirrer Mode".

Validation and characterization
After completion of our construction, we validated the performance by depositing a zinc-sulfide (ZnS) thin film on a soda lime glass substrate and characterized it.
We had been supplied with a properly degreased and ultrasonically cleaned corning soda lime glass substrate, as outlined in [12], having dimensions of 75 mm Â 25 mm. Standard cleaning procedures were maintained using organic solvents, dried by N 2 jet flow, and annealed on the hotplate at 120°C. This glass substrate was then clipped with a substrate holder. Four 150 mL glass beakers were taken. Two beakers were poured with deionized water for rinsing purposes and set at the 2nd and 4th positions (from the left of the operator) upon the beaker holder base. A cationic solution was prepared by dissolving ZnSO 4 salt in 150 mL of deionized water with a concentration of 0.3 M for adsorption of cation Zn 2+ ions and setting the beaker containing this solution at 1st position. The anionic solution was prepared by dissolving Na 2 S in 150 mL of deionized water with a concentration of 0.05 M. The reaction beaker containing the anionic solution was then set at the 3rd position.
The control parameters were set as shown in Table 1: After completion of the SILAR deposition cycles, we unmounted the glass substrate, dried by N 2 jet, and this as-deposited thin film was annealed on a hot plate at 300°C for an hour. Then samples were cut by a diamond cutter to the proper sizes as required for characterization.
The X-ray diffraction patterns of the films were recorded using a PANalytical-X'pert PRO instrument, a diffractometer in the scanning range 20°-80°using Cuka radiations with wavelength 1.5406 Å. SUPRA 5S-CARL Zeiss, Field Emission Scanning Electron Microscope (FESEM) with an integrated Energy Dispersive X-ray (EDX) spectroscopy was used for the determination of morphology and chemical composition. Dektak XT profilometer was used to determine the film thickness.
The thickness of the annealed ZnS thin-film was found to be around 300 nm. The deposited ZnS film by SILAR method using SnapFib is shown in Fig. 24. Fig. 25 Fig. 26 shows the FESEM micrographs of our SILAR method deposited thin film. From the FESEM we have been able to visualize different topographic characteristics and the goodness of the region in the film surface. This FESEM approach is very common for researchers to determine structures of size smaller up to even 1 nm. [18]. Fig. 27 shows the EDX (Energy Dispersive X-ray) spectroscopy plots for the ZnS films. EDX or Energy dispersive X-ray spectroscopy uses transitions of electrons to characterize materials. Since each material has its own atomic structure, in the EDX there will be a different collection of peaks on the electromagnetic emission spectrum. From the EDX data we observe two sharp peaks respectively for Zn and S. So, this tells us that the deposited film is of a binary compound.   Table 3 shows the percentage of Zn and S in EDX spectroscopic data for deposited ZnS thin-film. The results are in good agreement with the references, which used a similar approach. The precision of the results depends not only on the quality of the chemical solutions but also on the fact that the designed system has very smooth motion and is free of vibrations.

Ethics statements
This work doesn't involve the use of human and animal subjects.

Declaration of Competing Interest
The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.